home *** CD-ROM | disk | FTP | other *** search
- ;; ta-lk-renganathan.mim -- Tamil input method with Renganathan layout
- ;; Copyright (C) 2008
- ;; National Institute of Advanced Industrial Science and Technology (AIST)
- ;; Registration Number H15PRO112
-
- ;; This file is part of the m17n database; a sub-part of the m17n
- ;; library.
-
- ;; The m17n library is free software; you can redistribute it and/or
- ;; modify it under the terms of the GNU Lesser General Public License
- ;; as published by the Free Software Foundation; either version 2.1 of
- ;; the License, or (at your option) any later version.
-
- ;; The m17n library is distributed in the hope that it will be useful,
- ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- ;; Lesser General Public License for more details.
-
- ;; You should have received a copy of the GNU Lesser General Public
- ;; License along with the m17n library; if not, write to the Free
- ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- ;; Boston, MA 02110-1301, USA.
-
- (input-method ta lk-renganathan)
-
- (description "Tamil input method with Renganathan layout.
- For the detail, see the page: <http://www.locallanguages.lk/>
- ")
-
- (title "α«ò")
-
- (variable
- (use-surrounding-text (_"Surrounding text vs. preedit
- If 1, try to use surrounding text. Otherwise, use preedit.")
- 0 1 0))
-
- (macro
- (pre-proc
- (cond
- ((= @-1 0x200C)
- (delete @-1)))
- (cond
- ((= @+1 0x200C)
- (delete @+1))))
-
- (post-proc
- (cond
- ((& (>= @-1 0x0B95) (<= @-1 0x0BB9) ; a consonant
- (>= @+1 0x0BC6) (<= @+1 0x0BCC)) ; a left/two-part vowel sign
- ;; prevent syllable formation
- 0x200C)
-
- ((& (| (< @-2 0x0B95) (> @-2 0x0BB9)) ; not a consonant
- (>= @-1 0x0BC6) (<= @-1 0x0BCC) ; a left/two-part vowel sign
- (>= @+1 0x0B95) (<= @+1 0x0BB9) ; a consonant
- (| (< @+2 0x0BBE) (> @+2 0x0BD7))) ; not a vowel sign
- ;; exchange @-1 and @+1
- (set vs @-1)
- (set c @+1)
- (delete @-1)
- (delete @+1)
- (insert c)
- (insert vs))
-
- ((& (= @-1 0x200C)
- (| (< @-2 0x0B95) (> @-2 0x0BB9) ; not a constant
- (< @+1 0x0BC6) (> @+1 0x0BCC))) ; not a left/two-part vowel sign
- ;; delete unnecessary ZWNJ
- (delete @-1))
-
- ((& (= @+1 0x200C)
- (| (< @-1 0x0B95) (> @-1 0x0BB9) ; not a constant
- (< @+2 0x0BC6) (> @+2 0x0BCC))) ; not a left/two-part vowel sign
- ;; delete unnecessary ZWNJ
- (delete @+1))))
-
- (consonant-proc
- (move @<)
- (cond
- ((= @-1 0x200C)
- (delete @-1)))
- (set vs 0)
- (cond
- ((& (>= @-1 0x0BC6) (<= @-1 0x0BC8)) ; a left vowel sign
- (cond
- ((= @-2 0x200C)
- (set vs @-1)
- (delete @-2))
- ((| (< @-2 0x0B95) (> @-2 0x0BB9)) ; not a consonant
- (set vs @-1)
- (delete @-1)))))
-
- (move @>)
- (cond
- ((& (= @+1 0x200C)
- (| (< @+2 0x0BC6) (> @+2 0x0BCC))) ; not a left vowel sign
- (delete @+1)))
-
- (cond
- ((= vs 0x0BC6)
- (cond
- ((= @+1 0x0BBE)
- (delete @+1)
- 0x0BCA)
- ((| (= @+1 0x0BB3) (= @+1 0x0BD7))
- (delete @+1)
- 0x0BCC)
- (1
- 0x0BC6)))
- ((= vs 0x0BC7)
- (cond
- ((= @+1 0x0BBE)
- (delete @+1)
- 0x0BCB)
- (1
- 0x0BC7)))
- ((= vs 0x0BC8)
- 0x0BC8))
-
- (cond
- ((& (>= @-1 0x0B95) (<= @-1 0x0BB9) ; a consonant
- (>= @+1 0x0BC6) (<= @+1 0x0BCC)) ; a left vowel sign
- 0x200C)))
-
- (check-surrounding-text
- (cond
- ((& (= @+1 0x0B95) (= @+2 0x0BCD) (= @+3 0x0BB7)) ; k.ssa follows
- 0x0B95 0x0BCD 0x0BB7
- (delete @+3))
- ((& (>= @+1 0x0B95) (<= @+1 0x0BB9)) ; a consonant follows
- (set c @+1)
- (insert c)
- (delete @+1))
- ((& (>= @-1 0x0B95) (<= @-1 0x0BB9)) ; a consonant precedes
- 0x200C)))
- )
-
- (map
- (starter
- ("q") ("w") ("e") ("r") ("t") ("y") ("u") ("i") ("o") ("p") ("[") ("]")
- ("a") ("s") ("d") ("f") ("g") ("h") ("j") ("k") ("l") (";")
- ("z") ("x") ("c") ("v") ("b") ("n") ("m") ("`")
- ("Q") ("W") ("E") ("R") ("T") ("Y") ("U") ("I") ("O") ("P") ("{") ("}")
- ("A") ("S") ("D") ("F") ("G") ("H") ("J") ("K") ("L")
- ("Z") ("X") ("C") ("V") ("B") ("N") ("M")
- ((A-q)) ((A-w)) ((A-e)) ((A-r)) ((A-t)) ((A-y)) ((A-u)) ((A-i))
- ((A-1)) ((A-2)) ((A-3)) ((A-4)) ((A-5)) ((A-6)) ((A-7)) ((A-8)) ((A-9))
- ((A-0)) ((A-`)) ((A-=)) ((A--))
- ((BackSpace)) ((Delete)))
-
- (composite
- ("f;" "க்") ; 0B95 0BCD
- ("f;W" "க்‌ஷ") ; 0B95 0BCD 200C 0BB7
- ("Zh" "ஒளா") ; 0B92 0BB3 0BBE
- ("Zp" "ஒளி") ; 0B92 0BB3 0BBF
- ("ZP" "ஒளீ") ; 0B92 0BB3 0BC0
- ("Z[" "ஒளு") ; 0B92 0BB3 0BC1
- ("Z{" "ஒளூ") ; 0B92 0BB3 0BC2
- ("Z;" "ஒள்") ; 0B92 0BB3 0BCD
- ("xs" "α«ö") ; 0B94
- ("xsh" "ஒளா") ; 0B92 0BB3 0BBE
- ("xsp" "ஒளி") ; 0B92 0BB3 0BBF
- ("xsP" "ஒளீ") ; 0B92 0BB3 0BC0
- ("xs[" "ஒளு") ; 0B92 0BB3 0BC1
- ("xs{" "ஒளூ") ; 0B92 0BB3 0BC2
- ("xs;" "ஒள்") ; 0B92 0BB3 0BCD
- )
-
- (consonant
- ("f" "α«ò") ; 0B95
- ("q" "α«Ö") ; 0B99
- ("r" "α«Ü") ; 0B9A
- ("E" "α«£") ; 0B9C
- ("]" "α«₧") ; 0B9E
- ("l" "᫃") ; 0B9F
- ("z" "α«ú") ; 0BA3
- ("j" "α«ñ") ; 0BA4
- ("e" "α«¿") ; 0BA8
- ("d" "ன") ; 0BA9
- ("g" "᫬") ; 0BAA
- ("k" "α««") ; 0BAE
- ("a" "α«»") ; 0BAF
- ("u" "ர") ; 0BB0
- ("w" "ற") ; 0BB1
- ("y" "ல") ; 0BB2
- ("o" "ழ") ; 0BB4
- ("t" "வ") ; 0BB5
- ("U" "ஶ") ; 0BB6
- ("Q" "ஸ") ; 0BB8
- ("R" "ஹ") ; 0BB9
-
- ("T" "க்ஷ") ; 0B95 0BCD 0BB7
- )
-
- (sign
- ("p" "ி") ; 0BBF
- ("P" "ீ") ; 0BC0
- ("[" "ு") ; 0BC1
- ("{" "ூ") ; 0BC2
- (";" "்") ; 0BCD
- )
-
- (lla
- ("s"))
-
- (ssa
- ("W"))
-
- (aa
- ("h"))
-
- (e
- ("n"))
-
- (ee
- ("N"))
-
- (ai
- ("i"))
-
- (backspace
- ((BackSpace)))
-
- (delete
- ((Delete)))
-
- (misc
- ("`" "α«â") ; 0B83
- ("m" "α«à") ; 0B85
- ("M" "α«å") ; 0B86
- ("b" "α«ç") ; 0B87
- ("B" "α«ê") ; 0B88
- ("c" "α«ë") ; 0B89
- ("C" "α«è") ; 0B8A
- ("v" "α«Ä") ; 0B8E
- ("V" "α«Å") ; 0B8F
- ("I" "α«É") ; 0B90
- ("x" "α«Æ") ; 0B92
- ("X" "α«ô") ; 0B93
- ("Z" "α«ö") ; 0B94
-
- ("O" "ௐ") ; 0BD0
-
- ((A-0) "Ừ") ; 0BE6
- ((A-1) "௧") ; 0BE7
- ((A-2) "α»¿") ; 0BE8
- ((A-3) "௩") ; 0BE9
- ((A-4) "Ử") ; 0BEA
- ((A-5) "α»½") ; 0BEB
- ((A-6) "α»¼") ; 0BEC
- ((A-7) "α»¡") ; 0BED
- ((A-8) "α»«") ; 0BEE
- ((A-9) "α»»") ; 0BEF
- ((A-q) "௰") ; 0BF0
- ((A-w) "௱") ; 0BF1
- ((A-e) "௲") ; 0BF2
- ((A-y) "௳") ; 0BF3
- ((A-u) "௴") ; 0BF4
- ((A-i) "௵") ; 0BF5
- ((A-r) "௶") ; 0BF6
- ((A-t) "௷") ; 0BF7
- ((A-`) "௸") ; 0BF8
- ((A-=) "௹") ; 0BF9
- ((A--) "௺") ; 0BFA
-
- ("Y" "ஶ்ரீ") ; 0BB6 0BCD 0BB0 0BC0
-
- ("}" ";") ; 003B
-
- ("A" "")
- ("S" "")
- ("D" "")
- ("F" "")
- ("G" "")
- ("H" "")
- ("J" "")
- ("K" "")
- ("L" "")
- ))
-
- (state
- (init
- (starter
- (pushback 1)
- (cond
- ((& (= use-surrounding-text 1) (= @-0 -1))
- (shift surrounding-text))
- (1
- (shift preedit)))))
-
- (surrounding-text
- (consonant
- (consonant-proc)
- (commit))
-
- (lla
- (cond
- ((= @-1 0x200C)
- (delete @-1)))
-
- (cond
- ((& (>= @-2 0x0B95) (<= @-2 0x0BB9) ; a consonant
- (= @-1 0x0BC6))
- (delete @-1)
- 0x0BCC
- (cond
- ((= @+1 0x200C)
- (delete @+1))))
- ((= @-1 0x0B92)
- (delete @-1)
- 0x0B94
- (cond
- ((= @+1 0x200C)
- (delete @+1))))
- (1
- 0x0BB3
- (consonant-proc)))
-
- (commit))
-
- (ssa
- (cond
- ((= @-1 0x200C)
- (delete @-1)))
-
- (cond
- ((& (= @-2 0x0B95) (= @-1 0x0BCD))
- 0x200C))
- 0x0BB7
- (consonant-proc)
-
- (commit))
-
- (sign
- (cond
- ((= @+1 0x200C)
- (delete @+1)))
- (move @<)
- (cond
- ((= @-1 0x200C)
- (delete @-1)))
-
- (cond
- ((= @-1 0x0B94)
- (delete @-1)
- 0x0B92 0x0BB3)
- ((= @-1 0x0BCC)
- (delete @-1)
- 0x0BC6 0x0BB3))
-
- (commit))
-
- (aa
- (pre-proc)
-
- (cond
- ((= @-1 0x0BC6)
- (cond
- ((& (| (< @-3 0x0B95) (> @-3 0x0BB9)) ; not a consonant
- (= @-2 0x200C))
- (delete @-2))
- (1
- (delete @-1)))
- 0x0BCA)
-
- ((= @-1 0x0BC7)
- (cond
- ((& (| (< @-3 0x0B95) (> @-3 0x0BB9)) ; not a consonant
- (= @-2 0x200C))
- (delete @-2))
- (1
- (delete @-1)))
- 0x0BCB)
-
- ((= @-1 0x0B94)
- (delete @-1)
- 0x0B92 0x0BB3 0x0BBE)
-
- ((= @-1 0x0BCC)
- (delete @-1)
- 0x0BC6 0x0BB3 0x0BBE)
-
- (1
- 0x0BBE))
-
- (commit))
-
- (e
- (pre-proc)
-
- (cond
- ;; additional check-surrounding-text for this vowel sign
- ((& (>= @+1 0x0B95) (<= @+1 0x0BB9) ; a consonant
- (= @+2 0x0BB3))
- (set c @+1)
- (delete @+2)
- (insert c)
- 0x0BCC)
-
- ;; ordinary check-surrounding-text
- (1
- (check-surrounding-text)
- (cond
- ((= @+1 0x0BBE)
- (delete @+1)
- 0x0BCA)
- ((= @+1 0x0BD7)
- (delete @+1)
- 0x0BCC)
- (1
- 0x0BC6))))
-
- (commit))
-
- (ee
- (pre-proc)
-
- (check-surrounding-text)
- (cond
- ((= @+1 0x0BBE)
- (delete @+1)
- 0x0BCB)
- (1
- 0x0BC7))
-
- (commit))
-
- (ai
- (pre-proc)
-
- (check-surrounding-text)
- 0x0BC8
-
- (commit))
-
- (backspace
- (pre-proc)
-
- (cond
- ((& (>= @-4 0x0B95) (<= @-4 0x0BB9) ; a consonant
- (= @-3 0x0BC6)
- (= @-2 0x0BB3)
- (| (& (>= @-1 0x0BBE) (<= @-1 0x0BC2)) ; a right/above/below vowel sign
- (= @-1 0x0BCD)))
- (delete @-3)
- 0x0BCC)
-
- ((& (= @-4 0x0BB6) (= @-3 0x0BCD) (= @-2 0x0BB0) (= @-1 0x0BC0)) ; shrii
- (delete @-4))
-
- ((& (= @-3 0x0B92)
- (= @-2 0x0BB3)
- (| (& (>= @-1 0x0BBE) (<= @-1 0x0BC2)) ; a right/above/below vowel sign
- (= @-1 0x0BCD)))
- (delete @-3)
- 0x0B94)
-
- ((& (= @-3 0x0B95) (= @-2 0x0BCD) (= @-1 0x0BB7)) ; k.ssa
- (delete @-3))
-
- ((| (= @-1 0x0BCA) (= @-1 0x0BCC)) ; vowel sign e/ai
- (delete @-1)
- 0x0BC6)
-
- ((= @-1 0x0BCB) ; vowel sign ee
- (delete @-1)
- 0x0BC7)
-
- ((& (>= @-1 0x0BC6) (<= @-1 0x0BC8)) ; a left vowel sign
- (set vs @-1)
- (delete @-1)
- (cond
- ((& (>= @-1 0x0B95) (<= @-1 0x0BB9)) ; a consonant
- (cond
- ((& (= @-3 0x0B95) (= @-2 0x0BCD) (= @-1 0x0BB7)) ; k.ssa
- (delete @-3))
- (1
- (delete @-1)))
-
- (cond
- ((& (>= @+1 0x0B95) (<= @+1 0x0BB9) ; a consonant follows
- (| (< @+2 0x0BBE) (> @+2 0x0BD7))) ; not a vowel sign
- ;; visual : E C1 | C2 -> E C2 |
- ;; logical : C1 E | C2 -> C2 E |
- (cond
- ((& (= @+1 0x0B95) (= @+2 0x0BCD) (= @+3 0x0BB7)) ; k.ssa
- (delete @+3)
- 0x0B95 0x0BCD 0x0BB7)
- (1
- (set c @+1)
- (delete @+1)
- (insert c)))
- (insert vs))
-
- ((& (>= @-1 0x0B95) (<= @-1 0x0BB9)) ; a consonant precedes
- ;; visual : C1 E C2 | X -> C1 E | X
- ;; logical : C1 C2 E | X -> C1 N E | X
- 0x200C
- (insert vs))
-
- (1
- ;; visual : X1 E C | X2 -> X1 E | X2
- ;; logical : X1 C E | X2 -> X1 E | X2
- (insert vs))))
-
- ((= @-1 0x200C)
- (delete @-1))))
-
- (1
- (delete @-1)))
-
- (post-proc)
- (commit))
-
- (delete
- (pre-proc)
-
- (cond
- ((& (= @+1 0x0BB6) (= @+2 0x0BCD) (= @+3 0x0BB0) (= @+4 0x0C0)) ; shrii
- (delete @+4))
-
- ((& (= @+1 0x0B95) (= @+2 0x0BCD) (= @+3 0x0BB7)) ; k.ssa
- (cond
- ((& (>= @+4 0x0BC6) (<= @+4 0x0BC8)) ; a left vowel sign
- (delete @+4)
- 0x0B95 0x0BCD 0x0BB7)
- ((| (= @+4 0x0BCA) (= @+4 0x0BCB)) ; vowel sign e/ee
- (delete @+4)
- 0x0B95 0x0BCD 0x0BB7 0x0BBE)
- ((| (& (>= @+4 0x0BBE) (<= @+4 0x0BC2)) ; vowel sign aa .. uu
- (= @+4 0x0BCC) ; vowel sign ai
- (= @+4 0x0BCD)) ; virama
- (delete @+4))
- (1
- (delete @+3))))
-
- ((& (>= @+1 0x0B95) (<= @+1 0x0BB9)) ; a consonant
- (set c @+1)
- (cond
- ((& (>= @+2 0x0BC6) (<= @+2 0x0BC8)) ; a left vowel sign
- (delete @+2)
- (insert c))
- ((| (= @+2 0x0BCA) (= @+2 0x0BCB)) ; vowel sign e/ee
- (delete @+2)
- (insert c)
- 0x0BBE)
- ((| (& (>= @+2 0x0BBE) (<= @+2 0x0BC2)) ; vowel sign aa .. uu
- (= @+2 0x0BCC) ; vowel sign ai
- (= @+2 0x0BCD)) ; virama
- (delete @+2))
- (1
- (delete @+1))))
-
- ((| (= @+1 0x0BCA) (= @+1 0x0BCB)) ; vowel sign e/ee
- (delete @+1)
- 0x0BBE)
-
- ((= @+1 0x0BCC) ; vowel sign ai
- (delete @+1)
- 0x0BB3)
-
- (1
- (delete @+1)))
-
- (post-proc)
- (commit))
-
- (misc
- (move @<)
- (cond
- ((= @-1 0x200C)
- (delete @-1)))
- (move @>)
- (cond
- ((= @+1 0x200C)
- (delete @+1)))
- (commit)))
-
- (preedit
- (consonant (shift c-state))
- (composite (commit))
- (sign (commit))
- (misc (commit))
- (lla "ள" (shift c-state)) ; 0BB3
- (ssa "ஷ" (shift c-state)) ; 0BB7
- (aa "ா" (commit)) ; 0BBE
- (e "ெ" (shift e-state)) ; 0BC6
- (ee "ே" (shift ee-state)) ; 0BC7
- (ai "ை" (shift ai-state))) ; 0BC8
-
- (c-state
- (sign (shift c-s-state))
- (aa "ா" (shift c-s-state)) ; 0BBE
- (backspace (undo)))
-
- (c-s-state
- (sign
- (cond
- ((= @-2 0x0BCC)
- (move @-)
- (delete @-)
- 0x0BC6 0x0BB3
- (move @+))
- (1
- (commit)
- (shift preedit))))
- (aa
- "ா"
- (cond
- ((= @-2 0x0BCC)
- (move @-)
- (delete @-)
- 0x0BC6 0x0BB3
- (move @+))
- (1
- (commit)
- (shift preedit))))
- (backspace (undo)))
-
- (e-state
- (consonant (move @<) (delete @+) (move @>) "ெ" (shift e-c-state))
- (lla (delete @-) "ளெ" (shift e-c-state))
- (ssa (delete @-) "ஷெ" (shift e-c-state))
- (backspace (delete @-) (shift preedit))
- (nil (undo -1)))
-
- (ee-state
- (consonant (move @<) (delete @+) (move @>) "ே" (shift ee-c-state))
- (lla (delete @-) "ளே" (shift ee-c-state))
- (ssa (delete @-) "ஷே" (shift ee-c-state))
- (backspace (delete @-) (shift preedit))
- (nil (undo -1)))
-
- (ai-state
- (consonant (move @<) (delete @+) (move @>) "ை" (shift c-s-state))
- (lla (delete @-) "ளை" (shift c-s-state))
- (ssa (delete @-) "ஷை" (shift c-s-state))
- (backspace (delete @-) (shift preedit))
- (nil (undo -1)))
-
- (e-c-state
- (aa (delete @-) "ொ" (shift c-s-state))
- (lla (delete @-) "ௌ" (shift c-s-state))
- (backspace (delete @<) "ெ" (shift e-state)))
-
- (ee-c-state
- (aa (delete @-) "ோ" (shift c-s-state))
- (backspace (delete @<) "ே" (shift ee-state)))
- )
-
- ;; Local Variables:
- ;; coding: utf-8
- ;; mode: emacs-lisp
- ;; End:
-